#! /usr/bin/env python
# -*- coding: utf-8 -*-
"""
@File Name: PyMailGui专用邮件配置模块_mailconfig.py
@Author: LTisme
@Date: 2021/8/29 14:17
# -----------------------------------------------------------------------------------------------------
@Description: 
为了用这个程序阅读你自己的电子邮件，你应该设置你自己邮箱的POP和SMTP服务器名称和登录参数。
此模块还负责指定GUI某些组件的风格偏好，邮件Unicode编码策略。
另见textConfig.py，它是用于定制由PyMailGUI创建的PyEdit弹出窗口的。

警告：这里的大部分参数都是PyMailGUI运行所必需的，一定要记得备份！
# -----------------------------------------------------------------------------------------------------
"""

# -------------------------------------------------------------------------------
# （加载和删除时所需）POP3电子邮件服务器名和用户名
# -------------------------------------------------------------------------------

# popservername = '?Please set your mailconfig.py attributes?'

popservername = 'pop.qq.com'             # 其它账户请见altconfigs/目录
popusername   = '284618025@qq.com'

# -------------------------------------------------------------------------------
# （发送时所需）SMTP电子邮件服务器名和用户名
# -------------------------------------------------------------------------------

smtpservername = 'smtp.qq.com'    # 默认端口号为25

# see below for more smt options

# -------------------------------------------------------------------------------
# （可选）PyMailGUI用来填充编辑表格的个人信息；
# 没有设置则表达初始值留空；
# 签名signature——可以是一个三重引号的文本块，如果字符串为空则忽略
# 地址address——如果非空，则用作”From“文本框的初始值，
# 回复是不再尝试猜测From地址——不能每次都成功
# -------------------------------------------------------------------------------

# 这里是作者的设置，可以改成
myaddress = 'PP4E@learning-python.com'            # 这里会在回复框里显示
mysignature = ('Thanks,\n'
               '--Mark Lutz  (http://learning-python.com, http://rmi.net/~lutz)')

# -------------------------------------------------------------------------------
# (发送时可能需要) 如果需要进行身份验证，则需要用SMTP用户名/密码
# 如果不要求登录/认证，则设置用户为None或''，
# 将密码设为存有SMTP密码的文件的名称或者设为空字符串，
# 强制让程序（在控制台或者GUI中）请求输入密码
# -------------------------------------------------------------------------------

smtpuser = '284618025@qq.com'
smtppasswdfile = ''                       # 如果想让程序询问你则设为空
#smtpuser = popusername

print('servers:', popservername, smtpservername)


# -------------------------------------------------------------------------------
# (可选) PyMailGUI：存有你的POP密码的本地文件的名称，文件要求是单行文本文件；
# 如果是空文件或无法读取，则在第一次连接时请求输入密码；
# 密码未加密：在共享机器上将这项设为空文本；
# PyMailCGI总是请求输入密码（可能在远程服务器上运行）；
# -------------------------------------------------------------------------------

poppasswdfile  = r'c:\temp\pymailgui.txt'      # 如果想询问用户则设为''
# -------------------------------------------------------------------------------
# （必需）已发送邮件始终存入的本地文件；
# PyMailGUI的'Open'按钮将打开和查看这个文件；
# 如果可能从别的目录运行，那么不要使用"."格式
# -------------------------------------------------------------------------------

#sentmailfile = r'.\sentmail.txt'             # . 代表当前工作目录

#sourcedir    = r'C:\...\PP4E\Internet\Email\PyMailGui\'
#sentmailfile = sourcedir + 'sentmail.txt'

# 根据我的源文件自动决定文件名
# from . import 换行工具_wraplines as wraplines
import os
# mysourcedir   = os.path.dirname(os.path.abspath(wraplines.__file__))
mysourcedir   = os.path.dirname(__file__)                                   # 这个就可以了，作者的繁琐了，都不需要导入
sentmailfile  = os.path.join(mysourcedir, 'sentmail.txt')

# -------------------------------------------------------------------------------
# （已弃用）pymail保存POP邮件（全文）的本地文件；
# PyMailGUI改用弹出对话框来代替在GUI里请求输入文件名；
# 另外还请求输入Split目录，组分按钮则将文件保存在./TempParts；
# -------------------------------------------------------------------------------

#savemailfile = r'c:\temp\savemail.txt'       # not used in PyMailGUI: dialog

# -------------------------------------------------------------------------------
# （可选）定制PyMailGUI列表和查看窗口里的显示题头；
# listheaders用于替代默认设置，viewheaders则继续扩展listheaders；
# 但这两个对象都必须是字符串构成的元组，或者设为None，以便使用默认题头；
# -------------------------------------------------------------------------------

listheaders = ('Subject', 'From', 'Date', 'To', 'X-Mailer')
viewheaders = ('Bcc',)

# -------------------------------------------------------------------------------
# （可选）PyMailGUI服务器/文件邮件列表窗口、查看窗口及其附件按钮的文本的字体和颜色；
# 字体设置格式（'字体','字号','风格'）；颜色名设置（背景色，前景色）用'颜色名'或六进制字符串RRGGBB；
# None表示使用默认设置；
# -------------------------------------------------------------------------------

listbg   = 'indianred'                  # None, 'white', '#RRGGBB'
listfg   = 'black'
listfont = ('courier', 9, 'bold')       # 可以设置为None和('courier', 12, 'bold italic')格式
                                        # 列表栏采用等宽字体
viewbg     = 'light blue'               # 以前是 '#dbbedc'
viewfg     = 'black'
viewfont   = ('courier', 10, 'bold')
viewheight = 18                         # 打开后最大行数是（20）

partfg = None
partbg = None

# 请参考Tk里的颜色名称: aquamarine paleturquoise powderblue goldenrod burgundy ....
#listbg = listfg = listfont = None
#viewbg = viewfg = viewfont = viewheight = None      # to use defaults
#partbg = partfg = None

# -------------------------------------------------------------------------------
# （可选）查看、答复和转发时原邮件文本换行处的栏宽；
# 在此位置左侧的第一个分隔符处折行；
# 撰写邮件时文本不自动换行的：如果想自动换行，那么用户或收件人的邮件工具必须具备这个功能；
# 要想禁用换行，就把这个值设成大数值（1024之类？）
# -------------------------------------------------------------------------------

wrapsz = 90

# -------------------------------------------------------------------------------
# （可选）控制PyMailGUI在GUI中打开邮件组分的方式；
# 用于查看窗口的Split操作和附件快速访问按钮；
# 如果okayToOpenParts布尔值为假，那么GUI里不显示组分快速访问按钮，而Split会将邮件组分保存在某个目录下，但不打开它们；
# Split操作和快速访问按钮都用到了verifyPartOpens：如果设为False，那么Split操作将自动打开所有已知类型的组分；
# 网页浏览器用verifyHTMLTextOpen打开HTML主文本组分；
# -------------------------------------------------------------------------------

okayToOpenParts    = True      # 打开任意组分/附件吗？
verifyPartOpens    = False     # 是否在打开每个组分前请求用户确认？
verifyHTMLTextOpen = False     # 如果主文本组分是HTML，是否在打开前询问？

# -------------------------------------------------------------------------------
# （可选）在查看窗口中间部分所显示的邮件组分快速访问按钮的最大数目；
# 在所指定数量的按钮之后，会出现标签为”...“的按钮，在点击后运行"Split"操作——即提取邮件的其他组分；
# -------------------------------------------------------------------------------

maxPartButtons = 8             # 查看窗口邮件组分按钮的数目


# *** 3.0 中添加的内容 ***
# -------------------------------------------------------------------------------
# （抓取邮件所必需）Unicode编码，用于解码所抓取的完整邮件字节，以及编码和解码文本模式下的邮件文本保存文件中的文本；
# 这是一个处理Unicode编码的功能有限的临时办法，直到字节友好的email包为我们提供一个以单个邮件为单位、更精准地处理Unicode编码地解析器；
# 注：作者地有些古老的邮件保存文件解码时必须用"latin1"（是一种8位编码体系，7位ascii是它的一个子集），而非'utf8'；
# >>>>>>>>>>>>>所抓取的邮件的文本组分根据其题头自动进行编码；<<<<<<<<<<<<<<<<
# -------------------------------------------------------------------------------

fetchEncoding = 'utf8'    # 如何解码和存储邮件全文（ascii吗？），我自己采用utf8更好，更国际化一些

# -------------------------------------------------------------------------------
# （可选，用于发送）所撰写的邮件的主文本和所有文本附件的Unicode编码；
# 在整个会话中都使用这里设置的值；如果设置为None，则在邮件发送时提示用户输入编码，如果在GUI中选择了Cancel，则使用默认值'latin-1'；
# 如果所设置或输入的编码无法用于所发送的文本（例如，回复非ascii文本或附件时选择了ascii编码），总是转而采用UTF-8编码；
# 关于编码名称，email包比Python更加挑剔：latin-1可以识别（该编码使用quoted-printable MIME），但latin1不行（该编码使用base64 MIME）；
# 如果想使用系统平台默认设置，可将其设为sys.getdefaultencoding()；
# -------------------------------------------------------------------------------

mainTextEncoding       = 'ascii'   # 待发送邮件的主体中文本组分的编码（为None则询问用户）
attachmentTextEncoding = 'ascii'   # 所有待发送的附件中文本组分的编码 (utf-8, latin-1)

# -------------------------------------------------------------------------------
# （可选，用于发送）Unicode编码名称，用于在新撰写的邮件发送时编码非Unicode编码的邮件题头及题头中邮件地址里的非ASCII姓名；
# None表示使用默认的UTF-8，这个设置适用于大多数情况；
# 无法解码的邮件姓名部分将被丢弃（地址部分仍将使用）；
# 请注意，邮件题头将根据其中的内容而非用户设置，自动进行解码，以供显示；
# -------------------------------------------------------------------------------

headersEncodeTo = None     # 如何设置编码待发送的非ASCII题头 (None=UTF-8)

# -------------------------------------------------------------------------------
# （可选）选择帮助文档的文本版，HTML版，或两个版本都选择；
# 总是显示其中一种：如果两项都关闭了，则显示HTML格式
# -------------------------------------------------------------------------------

showHelpAsText = True      # 带有用于打开源文件按钮和滚动条的文本
showHelpAsHTML = True      # 在网页浏览器里显示HTML帮助，不带源文件链接

# -------------------------------------------------------------------------------
# （可选）如果设为True，那么要是所选定的HTMl文本邮件组分已在网页浏览器中显示，则不在PyEdit弹出窗口里显示；
# 如果设定为False，则两个窗口中都显示，以便在文本组件里查看Unicode编码名称及其效果（浏览器不一定知道）
# -------------------------------------------------------------------------------

skipTextOnHtmlPart = False       # 不在PyEdit弹出窗口里显示html组分

# -------------------------------------------------------------------------------
# （可选）每次请求加载后，下载的邮件题头或消息的最大数目；
# 如果设置为N，那么PyMailGUI能抓取不超过N封最近到达的邮件；
# 早于此范围的邮件不会从服务器抓取，而会显示为空/假邮件；
# 如果设置为None（或0），则加载时无限制；
# 如果你的收件箱有非常多的邮件而且网速或邮件服务器实在太慢了，以至于不能实现完整加载，那么就用这个策略吧；
# 另外，PyMailGUI只加载新到达的题头，但这个设置不用于这个特性；
# -------------------------------------------------------------------------------

fetchlimit = 50            # 加载时所抓取的题头/邮件的最大数目

# -------------------------------------------------------------------------------
# （可选）索引列表的初始宽度和高度（字符数×行数）；
# 这个设置只是为了方便，因为窗口打开后，就可以对其自由调整/拉伸；
# -------------------------------------------------------------------------------

listWidth = None           # None = 使用默认值 74
listHeight = None          # None = 使用默认值 15

# -------------------------------------------------------------------------------
# （可选，用于回复）如果设置为True，则回复时将用原邮件所有收件人（去掉重复和新发件人）预先填充回复邮件的Cc（抄送）地址；
# 如果设置为False，则不预先填充Cc，并且将回复配置为仅回复给原发件人；
# 在这两种情况下，都可以在填充后编辑Cc行。
# -------------------------------------------------------------------------------

repliesCopyToAll = True   # True=回复给发件人+所有收件人，否则仅回复给发件人

# 结束
